package dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import model.*;

public class EstadoDao extends BaseDao{
	private ResultSet estadoID;
	private static EstadoDao estadoDao=null;
	private List<Estado> estados;

	private EstadoDao(){}
	public static EstadoDao getEstadoDao(){
		if (estadoDao == null) {
			estadoDao = new EstadoDao();
			}
			return estadoDao;
	}
	@Override
	public List<Estado> listar() {
		// TODO Auto-generated method stub
		ArrayList<Estado> list = new ArrayList<Estado>();
		try {
			String sqlSent = "SELECT * FROM `estado`";
			estadoID = consultar(sqlSent);
			while (estadoID.next()) {
				Estado estado= new Estado(estadoID.getInt("id"),estadoID.getString("nombre"));
				list.add(estado);
			}
			desconectar();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		estados = list;
		return estados;
	}

	@Override
	public Object buscar(Integer id) {
		// TODO Auto-generated method stub
		try {
			String sqlSent = "SELECT * FROM `estado` WHERE id=" + id;
			estadoID = consultar(sqlSent);
			if (estadoID.next()) {
				Estado estado= new Estado(id,estadoID.getString("nombre"));
				desconectar();
				return estado;
			} else {
				Estado estado= null;
				return estado;
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			Estado estado= null;
			try {
				desconectar();
			} catch (Exception e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			return estado;
		}
	}

	@Override
	public void guardar(Object estado)throws SQLException {
		// TODO Auto-generated method stub
		String sqlSent = "INSERT INTO `estado` (`nombre`) VALUES ('"
				+ ((Estado) estado).getNombre() + "')";
		try {
			modificar(sqlSent);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			throw new SQLException("Error al guardar la reserva");
		}
	}

	@Override
	public void eliminar(Integer id)throws SQLException {
		// TODO Auto-generated method stub
		String sqlSent = "DELETE FROM `estado` WHERE id=" + id;
		try {
			modificar(sqlSent);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			throw new SQLException("Error al borrar la reserva");
		}
	}

	@Override
	public void modificar(Object estado)throws SQLException {
		// TODO Auto-generated method stub
		String sqlSent = "UPDATE rol SET nombre='" + ((Estado) estado).getNombre()
				+ "' WHERE id=" + ((Estado) estado).getId();
		try {
			modificar(sqlSent);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			throw new SQLException("Error al modificar la reserva");
		}
	}

}
